راهکار های افزایش امنیت فرم های آپلود

نویسنده: محمد مهدی تاریخ : ۱۴۰۲/۰۱/۰۳

یکی از بزرگترین مشکلات امنیتی در وب سایت ها، امنیت فرم های آپلود است. در صورتی که این فرم ها به درستی پیاده سازی نشوند، ممکن است هکرها بتوانند فایل های خبیث را به سرور شما آپلود کنند و به اطلاعات شما دسترسی پیدا کنند. در این مقاله، چند راهکار برای افزایش امنیت فرم های آپلود در وب سایت شما معرفی می شود.

بررسی نوع فایل های آپلود شده:

اولین قدم برای افزایش امنیت فرم های آپلود، بررسی نوع فایل های آپلود شده است. برخی از فرم های آپلود این اجازه را به کاربر می دهند که هر نوع فایلی را آپلود کنند. در صورتی که فایل های خطرناک مانند فایل های اجرایی (executable) آپلود شوند، ممکن است سرور شما به خطر بیفتد. برای جلوگیری از این مشکل، شما باید فقط به کاربران اجازه دهید تا فایل های خاصی را آپلود کنند. برای مثال، اگر شما فقط به کاربران اجازه دهید تا فایل های تصویری (jpg، png، gif و ...) و فایل های متنی (txt، pdf و ...) را آپلود کنند، امنیت سرور شما بسیار بالاتر خواهد بود.

کد نمونه:


$allowed_types = array('jpg', 'jpeg', 'png', 'gif', 'txt', 'pdf');
$file_type = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

if(!in_array($file_type, $allowed_types)){
  echo "Only image and text files are allowed!";
  exit();
}

تغییر نام فایل های آپلود شده:

در بعضی از موارد، هکرها ممکن است از نام فایل های خود استفاده کنند تا به سرور شما حمله کنند. برای جلوگیری از این مشکل، شما می توانید نام فایل های آپلود شده را به صورت تصادفی تغییر نام دهید. به عنوان مثال، می توانید از تاریخ و ساعت آپلود فایل استفاده کنید تا نام فایل را به شکلی تصادفی تغییر دهید.

کد نمونه:


$file_name = $_FILES['file']['name'];
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
$random_name = md5(date('YmdHis') . $file_name) . '.' . $file_ext;

استفاده از فیلترهای امنیتی:

استفاده از فیلترهای امنیتی می تواند به شما کمک کند تا فایل های خبیث را از قبل شناسایی کنید. یکی از معروف ترین فیلترهای امنیتی برای فرم های آپلود، فیلتر MIME است. این فیلتر به شما اجازه می دهد تا بررسی کنید که آیا فایل های آپلود شده از نوع MIME مناسبی هستند یا نه.

کد نمونه:


$allowed_mime_types = array('image/jpeg', 'image/png', 'image/gif', 'text/plain', 'application/pdf');
$file_mime = mime_content_type($_FILES['file']['tmp_name']);
if(!in_array($file_mime, $allowed_mime_types)){
  echo "Only image and text files are allowed!";
  exit();
}

محدود کردن حجم فایل های آپلودی:

یکی دیگر از راهکارهایی که می توانید برای افزایش امنیت فرم های آپلود استفاده کنید، محدود کردن حجم فایل های آپلودی است. با تعیین یک حداکثر حجم فایل، شما می توانید جلوی آپلود فایل های بزرگ را بگیرید که ممکن است باعث بارگذاری بالای سرور شما شود.

کد نمونه:

$max_file_size = 1024 * 1024;   // 1MB
$file_size = $_FILES['file']['size'];
if($file_size > $max_file_size){
  echo "Maximum file size exceeded!";
  exit();
}

اعتبارسنجی فایل های آپلودی:

قبل از ذخیره کردن فایل های آپلودی، باید اطمینان حاصل کرد که این فایل ها معتبر هستند. برای این منظور می توانید از توابع اعتبارسنجی فراخوانی فایل ها استفاده کنید. به عنوان مثال، در مورد تصاویر، می توانید از تابع getimagesize() استفاده کنید تا ابعاد تصویر و نوع فایل را بررسی کنید.

کد نمونه:

$file_type = $_FILES['file']['type'];
if($file_type == 'image/jpeg' || $file_type == 'image/png' || $file_type == 'image/gif') {
  $image_info = getimagesize($_FILES['file']['tmp_name']);
  if($image_info === false) {
    echo "Invalid image file!";
    exit();
  }
}


نسخه تکمیلی و حرفه ای تر این مقاله به زودی منتشر خواهد شد.

نظرات کاربران
متن نظر :
!

لطفا قبل از ثبت نظر وارد وارد حساب کاربری خود شوید یا ثبت نام کنید

آکادمی بلوهاست ، با هدف ارائه آموزش های کاربردی به کاربران راه اندازی شده و مرتب بروزرسانی می شود

عضویت در خبرنامه

نماد های اعتماد
تمام حقوق برای بلوهاست محفوظ است